//===== 内置对象
//----- 1.数组
let arr = new Array();//实例化对象

console.log(typeof arr);//object
console.log(arr instanceof Object);//true
console.log(arr instanceof Array);//true
let n = new Number(10);
console.log(n);
console.log(n instanceof Number);//true
//isArray()  数组专用判断方法
console.log(Array.isArray(arr));//true
console.log(Array.isArray(n));//false

//isNaN()


//基础数据类型本身是没有方法的
//js自动封装成number对象，所以才可以直接调用方法
// let num=12;
// console.log(num.toFixed());

//---- 2.string对象
// let str='abc';
//执行三个动作
//1.生成临时变量
// let tep = new String('abc');
// //2.把临时变量的值赋值给我们声明的str
// let str = tep;
// //3.销毁临时变量
// tep = null;

//查看长度的属性
// console.log(str.length);
// console.log(str[1]);
// for(let i=0;i<str.length;i++){
//     console.log(str[i]);
// }

//字符串方法
//indexOf() 接收两个参数，第一个是查找的字符，第二个参数可选，是开始查找的下标

// let str='第一个参数必填，第二个参数可选';
// console.log(str.indexOf('参',5));//11

// 练习：统计字符串中所有的e；
let str = 'erAesedxcveebnmfdee';
let count = 0;
// let s = new Set()
// for (let i = 0; i < str.length; i++) {
//     // if (str[i] == 'e') {
//     //     count++
//     // }
//     if (str.indexOf('e', i) !== -1) {
//         s.add(str.indexOf('e', i))//得到的是e的不重复的下标
//     }
// }
// console.log(s);
// console.log(s.size);
// let a = str.indexOf('e');//查找第一个e的下标
// while (a !== -1) {//e存在
//     count++;//计数
//     a = str.indexOf('e', a + 1);//从下一个字符开始判断还有没有e
// }
// console.log(count);

// let index = -1;
// do {
//     index = str.indexOf('e', index + 1);//0 2
//     if (index !== -1) {
//         count++
//     }

// } while (index !== -1)

//charAt() 访问特定的字符

// console.log(str.charAt(3));
// let result=str.charAt(300);//空字符串
// console.log(typeof result);

//charCodeAt()
// console.log(str.charCodeAt(2));//65


// let str1 = '黄dggajhdga';
// console.log(str1.toUpperCase());

// replace()  替换字符,只替换匹配上的第一个字符
//第一个参数是被替换的字符，第二个参数是替换成的字符
//返回一个新的字符串
// console.log(str1.replace('g','G'));
// str1=str1.replace('d','鑫宇');
// console.log(str1);

// while (str1.indexOf('g') !== -1) {
//     str1 = str1.replace('g', 'G')
// }

// console.log(str1);
//

//--- math对象
//常用属性
// console.log(Math.PI);

//常用的方法
//最大值最小值
// let max=Math.max(10,11,3,4,8)
// let min=Math.min(10,11,3,4,8)
// console.log(max,min);
// let arr2=[10,11,3,4,8]
// //数组的最大值最小值
// let maxInArr=Math.max.apply(null,arr2)
// let minInArr=Math.min(...arr2);
// console.log(maxInArr,minInArr);

//ceil()  向上取整
console.log(Math.ceil(12.53));

//floor() 向下取整
console.log(Math.floor(9.99));

//round() 四舍五入取整
console.log(Math.round(9.09));
console.log(Math.round(-3.5));//-3
console.log(Math.round(-3.6));//-4

//abs() 绝对值
console.log(Math.abs(-10));

//pow() 幂
console.log(Math.pow(2, 3));
console.log(2 ** 3);

//sqrt() 平方根
console.log(Math.sqrt(4));


//弧度
// 360度=2*Math.PI
// 弧度=度数*Math.PI/180


//---- date对象
//时间戳 从1970.1.1 00:00:00
// let now=Date.now();
// console.log(now/1000);//从1970.1.1 00:00:00到现在的秒数

// console.log(Date());//Tue Jan 31 2023 16:32:07 GMT+0800 (中国标准时间)

// let date = new Date();//格林威治时间
// console.log(date);

//时间戳转换成日期
// let date2=new Date(123456789);
// console.log(date2);
// console.log(date2.toString());//Fri Jan 02 1970 18:17:36 GMT+0800 (中国标准时间)
// console.log(date2.toLocaleString());//1970/1/2 下午6:17:36

// let date=new Date();
// let year=date.getFullYear();//年
// let month=date.getMonth()+1;//月
// let day=date.getDate();//日
// let hour=date.getHours();//时 24小时制
// let minute=date.getMinutes();//分
// let second=date.getSeconds();//秒


//---- json对象
// let obj={
//     name:'zhangsan',
//     age:18,
//     gender:'male',
//     isGrow:true,
//     talk:function(){
//         console.log(this.name);
//     }
// }
//特点
// 1.属性名必须是双引号
// 2.允许的值有布尔值、数字、对象、双引号引起来的字符串
// 3.不允许出现函数

//普通obj转成json对象格式  序列化
//转化时直接忽略函数
// let j=JSON.stringify(obj);
// console.log(j);//'{"name":"zhangsan","age":18,"gender":"male","isGrow":true}'
// console.log(typeof j);

//json格式准普通obj 反序列化
// console.log(JSON.parse(j));


let date = new Date();


console.log(date);